package com.rws.message;

import java.util.concurrent.atomic.AtomicBoolean;

/**
 * 存放消息信息
 * 推送消息和接受消息会用到
 * 由于推送和消费是隔离的所以使用泛型会有意想不到的问题，从而采用string
 * @Author 谢卓才
 * @Date 2022/10/23 17:20
 */
public class LockMessage {

    /**
     * 存放消息的属性
     */
    private String message;

    /**
     * 创建时间
     */
    private final long createTime = System.currentTimeMillis();

    /**
     * 记录消息是否已经读取
     */
    private AtomicBoolean isRead = new AtomicBoolean(false);

    /**
     * 设置消息内容
     * @param message
     */
    public void setMessage(String message){
        this.message = message;
    }

    /**
     * 获取消息内容
     * @return
     */
    public String getMessage(){
        isRead.set(true);
        return message;
    }

    /**
     * 获取未读的消息内容
     * @return
     */
    public String getUnreadMessage(){
        if(isRead.compareAndSet(false,true)){
            return message;
        }
        return null;
    }

    /**
     * 判断是否已读
     * @return
     */
    public AtomicBoolean getIsRead() {
        return isRead;
    }

    /**
     * 获取创建时间
     * @return
     */
    public long getCreateTime() {
        return createTime;
    }
}
